package com.ruoyi.fun.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 商品销售报表对象 ec_sales_report
 * 
 * @author ruoyi
 * @date 2025-01-17
 */
public class EcSalesReport extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 商品ID */
    @Excel(name = "商品ID")
    private Long productId;

    /** 商品名称 */
    @Excel(name = "商品名称")
    private String productName;

    /** SKU编码 */
    @Excel(name = "SKU编码")
    private String skuCode;

    /** 分类ID */
    private Long categoryId;

    /** 分类名称 */
    @Excel(name = "分类名称")
    private String categoryName;

    /** 销售数量 */
    @Excel(name = "销售数量")
    private Integer saleCount;

    /** 销售金额 */
    @Excel(name = "销售金额")
    private BigDecimal saleAmount;

    /** 退货数量 */
    @Excel(name = "退货数量")
    private Integer refundCount;

    /** 退货率 */
    @Excel(name = "退货率(%)")
    private BigDecimal refundRate;

    /** 成本价 */
    private BigDecimal costPrice;

    /** 毛利率 */
    @Excel(name = "毛利率(%)")
    private BigDecimal grossProfitRate;

    /** 平均库存 */
    private BigDecimal avgStock;

    /** 库存周转率 */
    @Excel(name = "库存周转率")
    private BigDecimal stockTurnoverRate;

    /** 统计开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "统计开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 统计结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "统计结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    public void setProductId(Long productId) 
    {
        this.productId = productId;
    }

    public Long getProductId() 
    {
        return productId;
    }
    public void setProductName(String productName) 
    {
        this.productName = productName;
    }

    public String getProductName() 
    {
        return productName;
    }
    public void setSkuCode(String skuCode) 
    {
        this.skuCode = skuCode;
    }

    public String getSkuCode() 
    {
        return skuCode;
    }
    public void setCategoryId(Long categoryId) 
    {
        this.categoryId = categoryId;
    }

    public Long getCategoryId() 
    {
        return categoryId;
    }
    public void setCategoryName(String categoryName) 
    {
        this.categoryName = categoryName;
    }

    public String getCategoryName() 
    {
        return categoryName;
    }
    public void setSaleCount(Integer saleCount) 
    {
        this.saleCount = saleCount;
    }

    public Integer getSaleCount() 
    {
        return saleCount;
    }
    public void setSaleAmount(BigDecimal saleAmount) 
    {
        this.saleAmount = saleAmount;
    }

    public BigDecimal getSaleAmount() 
    {
        return saleAmount;
    }
    public void setRefundCount(Integer refundCount) 
    {
        this.refundCount = refundCount;
    }

    public Integer getRefundCount() 
    {
        return refundCount;
    }
    public void setRefundRate(BigDecimal refundRate) 
    {
        this.refundRate = refundRate;
    }

    public BigDecimal getRefundRate() 
    {
        return refundRate;
    }
    public void setCostPrice(BigDecimal costPrice) 
    {
        this.costPrice = costPrice;
    }

    public BigDecimal getCostPrice() 
    {
        return costPrice;
    }
    public void setGrossProfitRate(BigDecimal grossProfitRate) 
    {
        this.grossProfitRate = grossProfitRate;
    }

    public BigDecimal getGrossProfitRate() 
    {
        return grossProfitRate;
    }
    public void setAvgStock(BigDecimal avgStock) 
    {
        this.avgStock = avgStock;
    }

    public BigDecimal getAvgStock() 
    {
        return avgStock;
    }
    public void setStockTurnoverRate(BigDecimal stockTurnoverRate) 
    {
        this.stockTurnoverRate = stockTurnoverRate;
    }

    public BigDecimal getStockTurnoverRate() 
    {
        return stockTurnoverRate;
    }
    public void setStartDate(Date startDate) 
    {
        this.startDate = startDate;
    }

    public Date getStartDate() 
    {
        return startDate;
    }
    public void setEndDate(Date endDate) 
    {
        this.endDate = endDate;
    }

    public Date getEndDate() 
    {
        return endDate;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("productId", getProductId())
            .append("productName", getProductName())
            .append("skuCode", getSkuCode())
            .append("categoryId", getCategoryId())
            .append("categoryName", getCategoryName())
            .append("saleCount", getSaleCount())
            .append("saleAmount", getSaleAmount())
            .append("refundCount", getRefundCount())
            .append("refundRate", getRefundRate())
            .append("costPrice", getCostPrice())
            .append("grossProfitRate", getGrossProfitRate())
            .append("avgStock", getAvgStock())
            .append("stockTurnoverRate", getStockTurnoverRate())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .toString();
    }
}